[toc]
centos7.8搭建openstack Mitaka版
mitaka版密码说明
密码名称 | 描述 |
---|---|
数据库密码(不能使用变量) | 数据库的root密码 |
ADMIN_PASS | admin 用户密码 |
CEILOMETER_DBPASS | Telemetry 服务的数据库密码 |
CEILOMETER_PASS | Telemetry 服务的 ceilometer 用户密码 |
CINDER_DBPASS | 块设备存储服务的数据库密码 |
CINDER_PASS | 块设备存储服务的 cinder 密码 |
DASH_DBPASS | Database password for the dashboard |
DEMO_PASS | demo 用户的密码 |
GLANCE_DBPASS | 镜像服务的数据库密码 |
GLANCE_PASS | 镜像服务的 glance 用户密码 |
HEAT_DBPASS | Orchestration服务的数据库密码 |
HEAT_DOMAIN_PASS | Orchestration 域的密码 |
HEAT_PASS | Orchestration 服务中heat 用户的密码 |
KEYSTONE_DBPASS | 认证服务的数据库密码 |
NEUTRON_DBPASS | 网络服务的数据库密码 |
NEUTRON_PASS | 网络服务的 neutron 用户密码 |
NOVA_DBPASS | 计算服务的数据库密码 |
NOVA_PASS | 计算服务中nova 用户的密码 |
RABBIT_PASS | RabbitMQ的guest用户密码 |
SWIFT_PASS | 对象存储服务用户swift 的密码 |
实验环境
角色 | IP | 主机名 | 默认网关 | 硬件环境 | 虚拟化 | 防火墙 | selinux |
---|---|---|---|---|---|---|---|
控制节点 | 10.0.0.11/24 | controller | 10.0.0.1 | 4G内存,50G硬盘 | 开启 | 关闭 | 关闭 |
计算节点 | 10.0.0.31/24 | compute1 | 10.0.0.1 | 4G内存,50G硬盘 | 开启 | 关闭 | 关闭 |
1.基础环境配置
1.1 关闭防火墙和selinux
//禁用防火墙
systemctl stop firewalld && systemctl disable firewalld
//禁用selinux
#临时修改
setenforce 0
#永久修改,重启服务器后生效
sed -i '7s/enforcing/disabled/' /etc/selinux/config
1.2 配置hosts解析
#控制节点和计算节点相同操作
cat >> /etc/hosts << EOF
10.0.0.11 controller
10.0.0.31 compute1
10.0.0.41 block1
10.0.0.51 object1
10.0.0.52 object2
EOF
1.3 配置NTP服务,要保证控制节点和计算节点时间一致
控制节点
1.安装chrony
yum -y install chrony
2.编辑chrony配置文件/etc/chrony.conf
/删除以下4行,使用阿里云NTP服务器
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
修改为
server ntp1.aliyun.com iburst
/允许连接控制节点的网段,24行增加以下一行
allow 10.0.0.0/24
#用以下命令修改
sed -i '3,6d' /etc/chrony.conf && sed -i '3cserver ntp1.aliyun.com iburst' \
/etc/chrony.conf && sed -i '23callow 10.0.0.0/24' /etc/chrony.conf
3.启动NTP服务并设置开机自启
systemctl enable chronyd && systemctl start chronyd
4.检查端口,监听udp323端口
netstat -nupl|grep chronyd
udp 0 0 127.0.0.1:323 0.0.0.0:* 29356/chronyd
udp 0 0 0.0.0.0:123 0.0.0.0:* 29356/chronyd
udp6 0 0 ::1:323 :::* 29356/chronyd
5.验证
chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 8.8.8.8 2 6 37 29 +43us[ -830us] +/- 22ms
计算节点
1.安装chrony
yum -y install chrony
2.编辑chrony配置文件/etc/chrony.conf
/删除以下4行,指定控制节点为NTP服务器
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
修改为
server controller iburst
#用以下命令修改
sed -i '3,6d' /etc/chrony.conf && sed -i '3cserver controller iburst' /etc/chrony.conf
3.启动NTP服务并设置开机自启
systemctl enable chronyd && systemctl start chronyd
4.检查端口,监听udp323端口
netstat -nupl|grep chronyd
udp 0 0 127.0.0.1:323 0.0.0.0:* 1327/chronyd
udp6 0 0 ::1:323 :::* 1327/chronyd
5.验证,计算节点显示的是控制节点
chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? controller 3 6 200 50 +1319ms[+1319ms] +/- 14.4s
1.4 下载openstack官方yum源安装openstack客户端
⚠️Mitaka版官方文档中直接安装centos-release-openstack-mitaka
会提示没有可用包(使用的是阿里云的yum源),得先下载一个包才可以继续安装!!!
下载官方yum源提示无包可用解决方法
控制节点和计算节点相同操作
#下载yum源并安装openstack客户端
wget https://cbs.centos.org/kojifiles/packages/centos-release-openstack-mitaka/1/1.el7/noarch/centos-release-openstack-mitaka-1-1.el7.noarch.rpm
yum -y localinstall centos-release-openstack-mitaka-1-1.el7.noarch.rpm
yum -y install python-openstackclient
到此,控制节点和计算节点操作完成!!!
2.控制节点环境安装
2.1 安装mariadb数据库
1.安装mariadb数据库
yum -y install mariadb mariadb-server python2-PyMySQL
2.创建并编辑 /etc/my.cnf.d/openstack.cnf
在[mysqld]中,设置“bind-address”值为控制节点的管理网络IP地址以使得其他节点可以通过管理网络访问访问数据库。设置其他关键字来设置一些有用的选项和UTF-8编码
cat > /etc/my.cnf.d/openstack.cnf << EOF
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
3.启动数据库并设置开机自启
systemctl enable mariadb && systemctl start mariadb
4.进行数据库安全设置
mysql_secure_installation
Enter current password for root (enter for none): /没有密码,直接回车
Set root password? [Y/n] n /不设置root密码
Remove anonymous users? [Y/n] y /移除匿名用户
Disallow root login remotely? [Y/n] y /禁止root远程登陆
Remove test database and access to it? [Y/n] y /移除test数据库
Reload privilege tables now? [Y/n] y /刷新权限表
2.2 安装MongoDB数据库
Telemetry 服务使用 NoSQL 数据库来存储信息,典型地,这个数据库运行在控制节点上。向导中使用MongoDB。
mongodb监听tcp/27017
1.安装MongoDB数据库
yum -y install mongodb-server mongodb
2.编辑文件/etc/mongod.conf
配置 bind_ip 使用控制节点管理网卡的IP地址
修改第6行为
bind_ip = 10.0.0.11
默认情况下,MongoDB会在``/var/lib/mongodb/journal`` 目录下创建几个1GB大小的日志文件。如果你想将每个日志文件大小减小到128MB并且限制日志文件占用的总空间为512MB,配置 smallfiles 的值
取消第113行注释
smallfiles = true
#用以下命令修改
sed -i.bak '/^bind_ip/cbind_ip = 10.0.0.11' /etc/mongod.conf \
&& sed -i 's/#smallfiles = true/smallfiles = true/' /etc/mongod.conf
3.启动MongoDB并设置为开机自启
systemctl enable mongod && systemctl start mongod
2.3 安装消息队列rabbitmq
OpenStack 使用 message queue 协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上
rabbitmq会启动2个端口
tcp/5672 rabbitmq服务端口
tcp/25672 多个rabbitmq通信用到的端口
1.安装rabbitmq
yum -y install rabbitmq-server
2.启动消息队列rabbitmq并设置为开机自启
systemctl enable rabbitmq-server && systemctl start rabbitmq-server
3.添加openstack用户
rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack"
4.给openstack用户设置读和写权限 3个.*分别是 可读、可写、可配置
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"
5.启动rabbitmq一个插件,启动之后会监听tcp/15672,是一个web管理界面,默认用户名密码guest
rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
amqp_client
cowlib
cowboy
rabbitmq_web_dispatch
rabbitmq_management_agent
rabbitmq_management
Applying plugin configuration to rabbit@controller... started 6 plugins.
2.4 安装memcached
认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。
memcache监听 tcp/udp 11211端口
1.安装软件包
yum -y install memcached python-memcached
2.修改配置文件,设置memcache监听端口为控制节点,默认监听127.0.0.1
sed -i.bak 's#127.0.0.1#10.0.0.11#g' /etc/sysconfig/memcached
3.启动memcached并设置为开机自启
systemctl enable memcached && systemctl start memcached
到此,控制节点环境安装完成!!!
3.控制节点认证服务keystone安装
keystone认证服务功能:认证管理、授权管理、服务目录
认证:用户名和密码
授权:授权管理,例如一些技术网站(掘金、csdn)可以授权微信、QQ登陆
服务目录:相当于通讯录,即要访问openstack的镜像、网络、存储等服务,只需要找到keystone即可,而不需要再单独记住各个服务的访问地址
- 后续每安装一个服务都需要在keystone上注册
3.1 创建keystone数据库并授权
#用以下命令操作
mysql -e "CREATE DATABASE keystone;"
mysql -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';"
mysql -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';"
3.2 配置keystron
3.2.1 安装和配置keystron
-
keystone借助apache访问
-
mod_wsgi是帮助apache连接python程序
-
监听端口 5000(普通用户访问) 35357(管理员用户访问),apache做了2个多端口的站点
1.安装相关包
yum -y install openstack-keystone httpd mod_wsgi openstack-utils.noarch
2.编辑文件 /etc/keystone/keystone.conf 并完成如下动作:
在 [database] 部分,配置数据库访问:
[root@controller ~]# vim /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
在[token]部分,配置Fernet UUID令牌的提供者
[token]
provider = fernet
#用以下命令修改
\cp /etc/keystone/keystone.conf{,.bak}
grep -Ev '^$|#' /etc/keystone/keystone.conf.bak >/etc/keystone/keystone.conf
openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token ADMIN_TOKEN
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet
MD5值
md5sum /etc/keystone/keystone.conf
d5acb3db852fe3f247f4f872b051b7a9 /etc/keystone/keystone.conf
3.初始化身份认证服务的数据库(切换到keystone用户,使用的shell是/bin/sh,执行 -c后的命令)
su -s /bin/sh -c "keystone-manage db_sync" keystone
上一步操作为导入表,以下命令执行返回有表即为正确
mysql keystone -e "show tables;"|wc -l
38
4.初始化Fernet key
keystone-manage fernet_setup --keystone-user keystone \
--keystone-group keystone
5.配置Apache服务器
5.1编辑/etc/httpd/conf/httpd.conf`文件,配置``ServerName`` 选项为控制节点
96行下入以下一行
ServerName controller
#用以下命令修改
sed -i.bak '96cServerName controller' /etc/httpd/conf/httpd.conf
MD5值
md5sum /etc/httpd/conf/httpd.conf
eaf0e2ae3fea84bac3e5a842f64bdfdb /etc/httpd/conf/httpd.conf
5.2创建文件/etc/httpd/conf.d/wsgi-keystone.conf
cat > /etc/httpd/conf.d/wsgi-keystone.conf <<\EOF
Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
EOF
MD5值
md5sum /etc/httpd/conf.d/wsgi-keystone.conf
8f051eb53577f67356ed03e4550315c2 /etc/httpd/conf.d/wsgi-keystone.conf
6.启动apache并设置为开机自启
systemctl enable httpd && systemctl start httpd